package com.song.EMS.dao;

import com.song.EMS.bean.Courier;
import com.song.EMS.exception.CourierIDCardException;
import com.song.EMS.exception.CourierPhoneException;

import java.sql.SQLException;
import java.util.List;

/**
 * @author song
 */
public interface CourierDao {
    /**
     * 查询快递员的所有信息
     * @param limit true 分页
     * @param pageIndex 分页起始索引
     * @param pageSize 分页数目
     * @return 快递员信息集合
     */
    public List<Courier> selectCouriers(Boolean limit,Integer pageIndex,Integer pageSize);

    /**
     * 通过手机号查询快递员
     * @param courierPhone 快递员手机号
     * @return 快递员信息
     */
    public Courier selectByPhone(String courierPhone);

    /**
     * 快递员的录入
     * @param courier 被录入的快递员对象
     */
    public void insertCourier(Courier courier) throws SQLException, CourierPhoneException, CourierIDCardException;

    /**
     * 修改快递员信息
     * @param courier 被修改的快递员对象
     * @return 1 修改成功 0 失败
     */
    public Integer updateCourier(Courier courier) throws CourierPhoneException, CourierIDCardException;

    /**
     * 删除快递员
     *
     * @param courierId 被删除快递员的编号
     * @return true 成功  false 失败
     */
    public Boolean deleteCourier(Integer courierId);

    /**
     * 快递员的总人数与每日注册人数
     * @return 总人数与注册人数的集合
     */
    public List courierConsole();

    /**
     * 通过快递员手机号修改其登录记录
     * @param courierPhone 快递员手机号
     */
    public void updateLoginTime(String courierPhone);

    /**
     * 快递员最勤快
     *
     * @param date null表示全部时间内  %y 表示一年之内   %m  表示一个月之内
     * @return 快递员根据处理快件数排行
     */
    public List<Courier> getHardworkingCouriers(String date);
    /**
     * 快递员最勤懒
     * @param date null表示全部时间内  %y 表示一年之内   %m  表示一个月之内
     * @return 快递员根据处理快件数排行
     */
    public List<Courier> getLazyCouriers(String date);
}
